參考來源:
https://www.guru99.com/linux-redirection.html
https://ithelp.ithome.com.tw/articles/10202925
重導向(Redirection):
當執行指令,可以改變輸入、輸出裝置
預設輸入是鍵盤,預設輸出是螢幕。通過重導向,可以更改上述標準輸入/輸出。
輸出重導向:
用>符號+檔案名
例:
ls -al>列表
這裡命令ls -al的輸出被重導向到文件“listing”而不是屏幕。
注意:在將命令輸出重導向到文件時使用正確的文件名。如果存在具有相同名稱的文件,則重導向命令將刪除該文件的內容,然後可能會被覆蓋。
如果不希望覆蓋文件但想要向文件添加更多內容,則應使用“>> ”。
輸入重導向則是用<符號+檔案名。
接著是文件描述符號File Descriptors(FD)
在Linux / Unix中,一切都是文件,常規文件,目錄,甚至設備都是文件。每個文件都有一個稱為文件描述符號(FD)的關聯編號。
螢幕也有File Descriptor.,當程式正在執行輸出,程式會得到螢幕的File Descriptor,這樣你就看的到螢幕輸出的東西,如果得到的是印表機的File Descriptor,那就會變印表機輸出的東西。
錯誤重導向:
無論何時在終端執行程序/命令,都會打開3個檔案,即標準輸入,標準輸出,標準錯誤。
運行程序時,這些文件始終存在。如前所述,文件描述符與這些文件中的每一個相關聯。
由圖可知其相關聯
檔案 檔案描述符號
標準輸入STDIN 0
標準輸出STDOUT 1
標準錯誤STDERR 2
錯誤重導向是Unix / Linux的一個非常常用的功能。
許多的UNIX用戶會認為許多命令會給你帶來大量的錯誤。
例如,在搜索文件時,通常會獲得權限拒絕錯誤。這些錯誤通常無助於搜索特定文件的人。
在執行shell腳本時,您通常不希望錯誤消息使正常的程序輸出變得混亂。
解決方案扁是將錯誤消息重導向到檔案。
例
上面我們正在執行一個名為myprogram的程序。
標準錯誤的文件描述符是2。
使用“2>”我們將錯誤輸出重導向到名為“errorfile”的文件
因此,程序輸出不會出錯。
之後學多重指令。